[% setvar title The Perl 6 Summary for the week ending 20030413 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 20030413'></a><h1>The Perl 6 Summary for the week ending 20030413</h1>
<p>Another week passes, another summary gets written. How does he do it?</p>
<p>We start, as per usual with the still very quiet perl6-internals list.</p>
<a name='hey sexy where you been?'></a><h2>hey sexy where you been?</h2>
<p>The internals list's normally impeccable spam filters failed slightly
this week and we actually saw a couple of spam messages sent via the
RT system. The problem is being looked into.</p>
<a name='Support for true and false properties'></a><h2>Support for true and false properties</h2>
<p>St&eacute;phane Payrard posted a 'micropatch' to support the true and
false properties that are Perl 6 needs.</p>
<a name='PMC elements() inaccessible from the assembler?'></a><h2>PMC <code>elements()</code> inaccessible from the assembler?</h2>
<p>St&eacute;phane also wondered about how he should access a PMC's
<code>elements</code> method via Parrot Assembly as there didn't seem to be a an
appropriate operator defined in <b><i>core.ops</i></b>. Leo T&ouml;tsch said
that it was known that there were inconsistencies between vtable
definitions and the ops files and that a major cleanup was needed
which would probably happen once it became clean which vtable methods
will remain and how <b><i>core.ops</i></b> needed to change.</p>
<p><a href='http://groups.google.com/groups?threadm=20030410122244.GA2448@stefp.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Parrot on Win32'></a><h2>Parrot on Win32</h2>
<p>Clinton A Pierce announced that he'd built a Win32 Parrot distribution
and had put a zip file up for downloading (and hopefully
mirroring). He warned that it was very much a work in progress and the
downloader should beware. But hey! Parrot on Win32! Bravo Clint!</p>
<p>In the same vein, Mattia Barbon posted a couple of patches to improve
Win32 support.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.0.14.2.20030410110332.01d5b090@mail.geeksalad.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://geeksalad.org/tmp/Parrot_Dist_20030410.zip' target='_blank'>geeksalad.org</a> -- Parrot on Win32!</p>
<p><a href='http://groups.google.com/groups?threadm=Mahogany-0.64.2-1004-20030412-182617.00@rbnet.it' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=Mahogany-0.64.2-1004-20030412-182613.00@rbnet.it' target='_blank'>groups.google.com</a></p>
<a name='Dan's Blog'></a><h2>Dan's Blog</h2>
<p>Dan Sugalski continues to post interesting stuff on his weblog,
including a discussion of the challenges he faces in writing Parrot's
Object spec.</p>
<p><a href='http://www.sidhe.org/~dan/blog/archives/000163.html' target='_blank'>www.sidhe.org</a></p>
<a name='Meanwhile over in perl6-language'></a><h1>Meanwhile over in perl6-language</h1>
<p>The internals list is still very quiet, seeing all of 28
messages. Meanwhile perl6-language saw over 200 messages. Maybe it had
something to do with Allison and Damian's Synopsis being posted on
perl.com</p>
<p><a href='http://www.perl.com/pub/a/2003/04/09/synopsis.html' target='_blank'>www.perl.com</a></p>
<a name='Incorporating WhatIf'></a><h2>Incorporating WhatIf</h2>
<p>David Storrs had wondered about the CPAN module WhatIf which provides
rollback functionality for arbitrary code. He wanted to know if
support for this rollback capability could be added to the Perl 6
core. Luke Palmer liked the idea, and pointed to Larry's discussion of
<code>let subcall()</code> in one of the appendices to Apocalypse 6. Simon
Cozens thought that 'that way lies madness' and wondered if we weren't
already a long way down that road. The thread got a little bit meta at
this point, discussing what was and wasn't a valid rationale for
adding something to the core rather than just implementing it in a
module. Austin Hastings rule of thumb (which seems to be a good one)
is that something belongs in core if it 'enables a paradigm', citing
rules, continuations, multidispatch, thread support and the new object
system as examples of paradigm enabling stuff that belongs in
core. Dan Sugalski's rule of thumb is 'does it provide extra utility
at marginal cost?' Spot the implementer.</p>
<p>It turns out that Larry's rule of thumb is pretty much the same as
Austin's and he thinks we should add <code>let funcall()</code> to the core
because 'management of hypotheticality is the essence of logic
programming'.</p>
<p><a href='http://groups.google.com/groups?threadm=20030404061120.B92116@megazone.bigpanda.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://search.cpan.org/author/SIMONW/Whatif-1.01/' target='_blank'>search.cpan.org</a> -- The WhatIf
module</p>
<p><a href='http://groups.google.com/groups?threadm=20030407180450.GB30009@wall.org' target='_blank'>groups.google.com</a></p>
<a name='== vs eq'></a><h2><code>==</code> vs <code>eq</code></h2>
<p>The discussion of the meaning of</p>
<pre>    \@a == \@b</pre>
<p>continued. In particular, does it return true if @a and @b are bound to
the same array, or does it return true simply if @a and @b have the
same number of elements. John Williams noted that he was looking
forward to Apocalypse 8, on references which would hopefully clarify a
lot of these issues.</p>
<a name='The Over overloading of is'></a><h2>The Over overloading of is</h2>
<p>Piers Cawley pointed out that the three different behaviours of 'is'
that Luke Palmer had worried about the week before were all just
examples of setting traits on containers and provided some code
in an attempt to show what he meant. Luke Palmer wasn't convinced (and
I'm not entirely convinced myself) but thought it was probably best to
reserve judgement until the Objects and Classes Apocalypse has been
done.</p>
<p><a href='http://groups.google.com/groups?threadm=m2k7e6nvae.fsf@TiBook.bofh.org.uk' target='_blank'>groups.google.com</a></p>
<a name='Properties and Methods and Namespaces, oh my!'></a><h2>Properties and Methods and Namespaces, oh my!</h2>
<p>Piers Cawley tried to put Luke Palmer's worries about clashes between
method and property names to rest, and failed to do so. Luke wanted to
have lexically and dynamically scoped properties, but that gave Dan
Sugalski the screaming abdabs. Luke Palmer came up with anonymous
properties, an idea which I particularly like:</p>
<pre>    my $visited = Property.new;

    sub breadth_first_traversal($root can LinksInterface, &amp;code) {
        my @queue is Queue = $root;
        for @queue {
            next if .$visited;
            $_ = $_ but $visited;
            code($_);
            push @queue: .links;
        }
    }</pre>
<p>I don't think any of the design team have commented on this particular
idea but I think it's lovely and I hope it gets rolled into the
language.</p>
<p><a href='http://groups.google.com/groups?threadm=m2el4do9gd.fsf@TiBook.bofh.org.uk' target='_blank'>groups.google.com</a></p>
<a name='globs?'></a><h2>globs?</h2>
<p>Paul showed a lump of Perl 5 code that depended on globs to do bulk
setting of attributes in hash based objects and wanted to know how
one could do the same thing in Perl 6. Responses were along two lines,
the first being that you wouldn't be able to do that sort of thing at
all with Perl 6 objects, and others pointing out that you didn't
really need a glob to get the example given to work. Paul was
enlightened.</p>
<p><a href='http://groups.google.com/groups?threadm=20030408205603.51871.qmail@web41209.mail.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='alphabet-blind pattern matching'></a><h2>alphabet-blind pattern matching</h2>
<p>The discussion of how to match streams of objects as well as simply
strings of characters using the grammar engine continued with a new
subject line. And it continued to make my head hurt. I particularly
liked Larry's observation that in 'treating patterns as too powerful
for just test [...]  we run the risk of making patterns to powerful
for text'. Larry seemed to think that the idea of matching streams of
objects with the grammar engine had merit though, which led to one of
his wonderful 'thinking aloud' posts where he went through the various
possibilities.</p>
<p><a href='http://groups.google.com/groups?threadm=200304090517.h395Hnb15932@bell.apicom.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=20030410004846.GA17607@wall.org' target='_blank'>groups.google.com</a> -- Larry thinks out loud 'til his
brain hurts</p>
<a name='Synopsis questions'></a><h2>Synopsis questions</h2>
<p>Angel Faus incurred the potential wrath of the summarizer by bundling
up a whole host of questions relating to Synopsis 6 in a single
post. Larry earned my undying gratitude by answering each question in
a separate post with a new subject. Yay Larry.</p>
<p>As it happened the answers provoked very little in the way of
discussion so I don't really need to handle each question separately
in this summary. Larry answered all the questions.</p>
<p><a href='http://groups.google.com/groups?threadm=200304110322.36698.afaus@corp.vlex.com' target='_blank'>groups.google.com</a></p>
<a name='Variable/value type syntax'></a><h2>Variable/value type syntax</h2>
<p>Ralph Mellor wasn't keen on the syntax for declaring the types of
values and variables and proposed a new syntax. People weren't keen. I
have the really strong feeling that whoever writes the Perl 6
introductory texts will have an interesting time explaining the
difference between variable and value types. At least Luke Palmer had
a moment of clarity when he realised why using <code>is</code> for tying made
sense...</p>
<p><a href='http://groups.google.com/groups?threadm=3E968475.5010301@self-reference.com' target='_blank'>groups.google.com</a></p>
<a name='Currying questions'></a><h2>Currying questions</h2>
<p>Ralph also wondered if currying assumptions could be overridden by
passing the relevant argument by name when the curried function is
called. Luke Palmer didn't think it should be allowed. No call from
the core design team yet.</p>
<p><a href='http://groups.google.com/groups?threadm=3E968850.2000604@self-reference.com' target='_blank'>groups.google.com</a></p>
<a name='Multimethod Invocants'></a><h2>Multimethod Invocants</h2>
<p>Paul got confused by multimethods with multiple invocants and asked for
clarification. Luke Palmer clarified things for him. The rule for
multimethods is that multidispatch is only done on the
invocants. Therefore a pair of declarations like:</p>
<pre>    multi foo($me : Int $i)    {...}
    multi foo($me : String $s) {...}</pre>
<p>would probably throw a compilation exception or at the very least a
warning because of the collision between invocant types. If you really
wanted to dispatch on the type of the second argument you'd have to
write the method declarations as:</p>
<pre>    multi foo($me, Int $i:)    {...}
    multi foo($me, String $s:) {...}</pre>
<p>Larry pointed out that one generally calls multimethods as if they
were subroutines, calling <code>$obj.foo(1)</code> would first try and find a
<i>method</i> called foo, only falling back to multiple dispatch there
were no such method to find. All of this engendered confusion in Michael
Lazzaro (and in me if I'm honest, but now it's been made clear, it
makes sense).</p>
<p><a href='http://groups.google.com/groups?threadm=20030411150717.51145.qmail@web41206.mail.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='Change in if syntax'></a><h2>Change in <code>if</code> syntax</h2>
<p>Buddha Buck was caught out by the fact that, in Perl 6 you don't need
parentheses 'round the test in an <code>if</code> statement and wondered when
things had changed. Luke Palmer pointed out that they were now
optional, a convenience bought by prohibiting whitespace between a
variable and its subscript (so <code>%foo {bar}</code> does not look up the
value associated with 'bar' in the %foo hash). Brent Dax hoped that
this no whitespace rule was a simple tiebreaker, but Damian dashed
that hope. The whitespace rule means that an opening brace after
whitespace *always* denotes the beginning of a block or an anonymous
hash. Some people don't like this.</p>
<p><a href='http://groups.google.com/groups?threadm=3E96EA21.5040901@14850.com' target='_blank'>groups.google.com</a></p>
<a name='Named parameters are always optional?'></a><h2>Named parameters are always optional?</h2>
<p>John Siracusa wanted a way of creating a subroutine that would only
accept named parameters, some or all of which are required. With Perl
6 as it stands, this appeared to be impossible without adding extra
code to the body of the sub. Luke Palmer thought that what John wanted
was silly, and suggested that if John really wanted the ability he
should just write a module to do it. After a few posts back and forth
on this, Austin Hastings pointed out that this discussion was
analogous to the earlier discussion about WhatIf and what should and
shouldn't be in the core.He argued -- by the 'enables a paradigm' rule
of thumb -- that there was no need for core support for requiring
named arguments because it could be added easily with a module. John
thought that adding this with a module meant that there would be no
way to check parameters successfully at compilation time (actually, I
think you could, with a suitably clever macro...).</p>
<p>By the end of the week John still wanted compulsory named arguments,
but nobody else (who participated in the thread) seemed to be
convinced that they were important enough to be implemented as part of
the language.</p>
<p><a href='http://groups.google.com/groups?threadm=BABCC095.67599' target='_blank'>groups.google.com</a>%siracusa@mindspring.com</p>
<a name='Aliasing operations in Perl 6'></a><h2>Aliasing operations in Perl 6</h2>
<p>Mark Jason Dominus asked for some clarification of the binding
operator <code>:=</code> and how it interacted with autodereferencing. Given
code like:</p>
<pre>    my $zero = 0;
    my $zeroref = \$zero;

    my $bound := $zeroref;</pre>
<p>He wanted to know whether the value of <code>$bound</code> was 0 or
<code>\$zero</code>. Damian answered that references only autodereferenced
themselves in an array or hash context, so the <code>$bound</code> would be <code>\$zero</code>.</p>
<p><a href='http://groups.google.com/groups?threadm=20030413190201.28216.qmail@plover.com' target='_blank'>groups.google.com</a></p>
<a name='Acknowledgements, Announcements and Apologies'></a><h1>Acknowledgements, Announcements and Apologies</h1>
<p>Leon Brocard does not make his traditional appearance in this summary
as he is on holiday. Normal service will hopefully be resumed soon.</p>
<p>If you've appreciated this summary, please consider one or more of the
following options:</p>
<ul>
<li><a name='Send money to the Perl Foundation at donate.perl-foundation.org/ and help support the ongoing development of Perl.'></a>Send money to the Perl Foundation at
<a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> and help support the ongoing
development of Perl.</li>
<li><a name='Get involved in the Perl 6 process. The mailing lists are open to all. dev.perl.org/perl6/ and www.parrotcode.org/ are good starting points with links to the appropriate mailing lists.'></a>Get involved in the Perl 6 process. The mailing lists are open  to
all. <a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> and <a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a>
are good starting points with links to the appropriate mailing lists.</li>
<li><a name='Send feedback, flames, money, photographic and writing commissions, or bvfree entry to this years OSCON and tutorials to p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a>'></a>Send feedback, flames, money, photographic and writing commissions, or
bvfree entry to this years OSCON and tutorials to
<i><a href='http://search.cpan.org/perldoc?<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>'>p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a></a></i></li>
</ul>
</div>
